<
programming> Used to describe code which can have multiple
simultaneous, interleaved, or nested invocations which will
not interfere with each other. This is important for
parallel processing,
recursive functions or subroutines,
and
interrupt handling.
It is usually easy to arrange for multiple invocations
(e.g. calls to a subroutine) to share one copy of the code and
any read-only data but, for the code to be re-
entrant, each
invocation must use its own copy of any modifiable data (or
synchronised access to shared data). This is most often
achieved using a
stack and allocating local variables in a
new
stack frame for each invocation. Alternatively, the
caller may pass in a pointer to a block of memory which that
invocation can use (usually for outputting the result) or the
code may allocate some memory on a
heap, especially if the
data must survive after the routine returns.
Re-
entrant code is often found in system software, such as
operating systems and
teleprocessing monitors. It is also
a crucial component of
multithreaded programs where the term
"thread-safe" is often used instead of "re-
entrant".
(1996-12-21)